// 把一个功能放在一个类中，这个类的功能就是扫描字符串
export default class Scanner {
  constructor(templateStr) {
    this.templateStr = templateStr;
    // 记录当前指针的位置, 剩余字符串的首位
    this.pos = 0;
    // 剩余字符串, 最初代表整个字符串
    this.tail = this.templateStr;
  }
  // 跳过大括号
  scan(stopTag) {
    // 确保剩余字符串的开头是 {{
    if (this.tail.indexOf(stopTag) === 0) {
      // 跳过{{, 也就是指针往后走 {{的长度
      this.pos = this.pos + stopTag.length;
      // 剩余字符串也要进行相应的改变
      this.tail = this.templateStr.substring(this.pos);
    }
  }
  /**
   * 寻找大括号
   * @param {表示要找的字面量} stopTag
   */
  scanUtil(stopTag) {
    let starPos = this.pos;
    while (!this.eos() && this.tail.indexOf(stopTag) !== 0) {
      this.pos++;
      this.tail = this.templateStr.substring(this.pos);
    }
    return this.templateStr.substring(starPos, this.pos);
  }
  // 判断指针是否到最后一位
  eos() {
    return this.pos >= this.templateStr.length
  }
}
